<!DOCTYPE HTML>
<html>
<head>
<title>FileInstall | AutoHotkey</title>
<meta name="description" content="The FileInstall command includes the specified file inside the compiled version of the script." />
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
</head>
<body>

<h1>FileInstall</h1>

<p>封装指定的文件到脚本的<a href="Scripts.htm#ahk2exe">已编译版本</a>中.</p>

<pre class="Syntax"><span class="func">FileInstall</span>, Source, Dest <span class="optional">, Overwrite</span></pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>Source</dt>
  <dd><p>要添加到已编译可执行文件中的文件名. 如果未指定绝对路径, 则假定文件在相对于脚本的目录中.</p>
    <p>文件名 <strong>不能</strong> 包含双引号, 变量引用(例如 %A_ProgramFiles%) 或通配符. 此外, 任何特殊字符(例如原义的百分号和逗号) 必须<a href="../misc/EscapeChar.htm">进行转义</a>(如同在其他所有命令的参数中一样). 最后, 此参数必须放在 FileInstall 的右边而不能在下面(即不能在命令的下面使用<a href="../Scripts.htm#continuation">延续行</a>).</p></dd>

  <dt>Dest</dt>
  <dd><p>从可执行文件中释放 <em>Source</em> 时使用的文件名. 如果未指定绝对路径, 则假定在 <a href="../Variables.htm#WorkingDir">%A_WorkingDir%</a>. 目标目录必须已经存在. 与 <em>Source</em> 不同, 这里可以使用变量引用.</p></dd>

  <dt>Overwrite</dt>
  <dd>
    <p>此参数确定是否覆盖已存在的文件. 如果此参数为 1(true), 则该命令将覆盖现有文件. 如果省略或为 0(false), 则该命令不会覆盖现有文件.</p>
        <p>此参数可以为<a href="../Variables.htm#Expressions">表达式</a>, 甚至是计算结果为真或假的表达式(因为真和假内部分别保存为 1 和 0).</p>
  </dd>

</dl>
<h2 id="Error_Handling">错误处理</h2>
<p><span class="ver">[v1.1.04+]</span>: 此命令失败时会抛出异常. 想了解更多信息, 请参阅<a href="Catch.htm#RuntimeErrors">运行时错误</a>.</p>
<p>失败时, <a href="../misc/ErrorLevel.htm">ErrorLevel</a> 被置为 1, 否则为 0.</p>
<p>任何无法将文件写入目标的情况都被认为是失败. 例如:</p>
<ul>
  <li>目标文件已经存在, 并且 <em>Overwrite</em> 参数为 0(false) 或省略.</li>
  <li>由于权限错误, 或由于文件正在使用中, 无法打开目标文件.</li>
  <li>目标路径无效或指定的文件夹不存在.</li>
  <li>源文件不存在(仅针对未编译的脚本).</li>
  <li>源和目标是相同的位置(仅对于未编译的脚本).</li>
</ul>

<h2 id="Remarks">备注</h2>
<p>当 <a href="../Scripts.htm#ahk2exe">Ahk2Exe</a> 在编译脚本期间读取该命令时, <em>Source</em> 指定的文件被添加到编译后的脚本中. 稍后, 当编译后的脚本 EXE 运行并执行对 FileInstall 的调用时, 将从EXE中提取文件并将其写入 <em>Dest</em> 指定的位置.</p>
<p>添加到脚本中的文件在编译过程中既不压缩也不加密, 但可以使用 Ahk2Exe 中的适当选项压缩已编译的脚本 EXE.</p>
<p>如果在普通(未编译) 脚本中使用此命令, 则会简单地复制一个副本, 这样可以帮助测试最终会进行编译的脚本.</p>

<h2 id="Related">相关</h2>
<p><a href="FileCopy.htm">FileCopy</a>, <a href="_Include.htm">#Include</a></p>
<h2 id="Examples">示例</h2>
<div class="ex" id="ExBasic">
<p><a class="ex_number" href="#ExBasic"></a> 在脚本的编译版本中包含一个文本文件. 之后, 当编译后的脚本被执行时, 包含的文件会被解压缩到另一个位置, 并使用指定的名字. 如果这个位置上已经有这个名字的文件, 它将被覆盖.</p>
<pre>FileInstall, My File.txt, %A_Desktop%\Example File.txt, 1</pre>
</div>

</body>
</html>